Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2016, 00:03
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

приходит HTTP_RAW_DATA
после отправки данных через XMLHttpRequest в php скрипте в POST/GET не получаю ни чего, зато есть в HTTP_RAW_DATA
JS выглядит так:
xhr_object = create_ajax();

function create_ajax() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
    var names = [
        "Msxml2.XMLHTTP.6.0",
        "Msxml2.XMLHTTP.3.0",
        "Msxml2.XMLHTTP",
        "Microsoft.XMLHTTP"
    ];
    for (var i in names)
    {
        try {
            return new ActiveXObject(names[i]);
        } catch (e) {
        }
    }
    alert("Browser not compatible ...");
}

function startProgress() {
    if (xhr_object == null)
        return;
    if (xhr_object.readyState > 0 && xhr_object.readyState < 4) {
        return; /* request is running */
    }
    var data = JSON.stringify({
        progress: 'start',
        position: '',
        path: '/images/photos/'
    });

    xhr_object.open("POST", "core.php", true);
//    xhr_object.setRequestHeader("X-Requested-With", "XMLHttpRequest");
//    xhr_object.setRequestHeader('Content-type', 'application/json; charset=utf-8');
//    xhr_object.responseType = 'json';
    xhr_object.onreadystatechange = function () {
        switch (xhr_object.readyState) {
            case 0:
//                doc_status.innerHTML = "uninitialized";
                console.log("uninitialized");
                break;
            case 1:
//                doc_status.innerHTML = "loading ...";
                console.log("loading ...");
                break;
            case 2:
//                doc_status.innerHTML = "loaded";
                console.log("loaded");
                break;
            case 3:
//                doc_status.innerHTML = "interactive";
                console.log("interactive");
                break;
            case 4:
//                doc_status.innerHTML = "complete";
                console.log("complete");
                if (xhr_object.status == 200) {
//                    fpm_status(xhr_object.responseText);
                    console.log(xhr_object.responseText);
                } else {
//                    doc_status.innerHTML = "Error " + xhr_object.status;
                    console.log("Error " + xhr_object.status)
                }
                break;
        }
    }
    xhr_object.send(data);

}


подскажите что я делаю не так?
почему в POST нет нужных мне данных?

P.S. пробовал передавать с параметрами в закоментированных строках, результат такой же
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2016, 15:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var data = JSON.stringify({
progress: 'start',
position: '',
path: '/images/photos/'
});


var data = 'progress=start&position&path=/images/photos/';
xhr_object.open("POST", "core.php", true);
xhr_object.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


PS. HTTP_RAW_POST_DATA, HTTP_RAW_DATA нет.

Последний раз редактировалось laimas, 14.03.2016 в 15:10.
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2016, 17:23
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Ну или если очень хочется JSON

xhr_object = create_ajax();
var data = JSON.stringify({
        progress: 'start',
        position: '',
        path: '/images/photos/'
});
xhr_object.open("POST", "core.php", true);
xhr_object.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr_object.send(data);


php
$json = file_get_contents('php://input');
$json_decode = json_decode($json, true);

Последний раз редактировалось destus, 14.03.2016 в 17:30.
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2016, 17:50
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

Сообщение от laimas Посмотреть сообщение
PS. HTTP_RAW_POST_DATA, HTTP_RAW_DATA нет.
отлично!
так работает!

но я спросил как мне при помощи данного скрипта отправить данные в $_POST
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2016, 17:55
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

Сообщение от destus Посмотреть сообщение
Ну или если очень хочется JSON
.....
.....
.....
php
$json = file_get_contents('php://input');
$json_decode = json_decode($json, true);
то же хорошо, а при помощи этого в переменной $_POST появятся данные?
уже без разницы в каком формате, потом их можно будет деокдировать
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2016, 17:58
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Они будут в $json_decode.
Ответить с цитированием
  #7 (permalink)  
Старый 14.03.2016, 19:16
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

это понятно, получается что данные будут браться не из $_POST, а из потока php://input


а как тогда JQ отправляет данные куда надо?

посмотрел код (заблудился, даже с фонариком ) и не нашёл
Ответить с цитированием
  #8 (permalink)  
Старый 14.03.2016, 21:02
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

получилось)))
немного не так как хотелось, но:
var data = JSON.stringify({
        iteration: 'start',
        position: '',
        path: '/images/photos/'
    });
xhr_object.open("POST", "core.php", true);
xhr_object.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
xhr_object.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr_object.send('data=' + data);


теперь
$decoded = json_decode($_POST['data'])
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2016, 06:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если нужны данные сразу как массив $_POST, то зачем же их прятать в json, а затем выкорчевывать?
Ответить с цитированием
  #10 (permalink)  
Старый 15.03.2016, 21:24
Аватар для woojin
Аспирант
Отправить личное сообщение для woojin Посмотреть профиль Найти все сообщения от woojin
 
Регистрация: 13.08.2012
Сообщений: 38

хотелось сделать так
но использовать буду
var data = 'progress=start&position&path=/images/photos/';
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не приходит ответ с запроса AJAX Taranse AJAX и COMET 1 07.02.2016 14:42
focusout приходит при активациия элемента (type=number) ValeryBush Firefox/Mozilla 0 17.07.2015 14:43
Как раскодировать строку которая приходит с сервера? Armen Общие вопросы Javascript 3 11.03.2015 15:48
Не приходит письмо на почиу. Batyabest Общие вопросы Javascript 11 30.12.2013 21:31
xmlhttprequest на сервер не приходит заголовок Black Moon AJAX и COMET 19 21.11.2011 18:24